<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Title</title>
</head>
<body>

</body>
<script>
	// * 旧的: 必须在启动异步任务前指定回调函数
	{
		// setTimeout(function(){
		// 	// 2秒钟以后执行的函数。
		// },2000)
		
		
		// const xhr = new XMLHttpRequest();
		// xhr.open("get","1-错误处理.html");
		// xhr.send();
		// // 先指定回调函数
		// xhr.onload = function(){
		// 	// 当得到响应体数据后要执行的函数。
		// 	console.log(xhr.response);
		// }
		
		// 后指定回调函数
		// setTimeout(()=>{
		// 	xhr.onload = function(){
		// 		// 当得到响应体数据后要执行的函数。
		// 		console.log(xhr.response);
		// 	}
		// },3000)
		
	}
	
	{
		// Promise可以先指定回调函数，也可以后指定。
		// 先指定函数，再更改的状态。
		const p = new Promise(function (resolve, reject) {
			const xhr = new XMLHttpRequest();
			xhr.open("get", "1-错误处理.html");
			xhr.send();
			xhr.onload = function () {
				resolve(xhr.response);
			}
		});
		p.then(function (res) {
			console.log(res);
		})
		p.then(function (res) {
			console.log(res);
		})
		p.then(function (res) {
			console.log(res);
		})
		
		
		// 先更改状态再指定函数
		// const p = new Promise(function(resolve, reject){
		// 	resolve(100)
		// });
		// p.then(function(res){
		// 	console.log(res);
		// })
		// p.then(function(res){
		// 	console.log(res);
		// })
		// p.then(function(res){
		// 	console.log(res);
		// })
	}
	// * promise: 启动异步任务 => 返回`promie`对象 => 给promise对象绑定回调函数(甚至可以在异步任务结束后指定/多个)
	
	
	const obj = {
		run() {
		
		}
	}
	obj.run()
</script>
</html>